package 我的Java学习_算法基础.day_07;

import java.util.HashSet;
import java.util.Set;

/**
 * @author 挚爱之夕
 * @date 2021/8/19 - 08 - 19 - 18:08
 * @Description: 我的暑假Java学习.day_06
 * @Version: 1.0
 */
public class _109_合法括号 {
    public static void main(String[] args) {
        Set<String> parenthesis = parenthesis(3);
        System.out.println(parenthesis);
    }
    private static Set<String> parenthesis(int n){
        Set<String> s_n = new HashSet<>();
        if(n==1){
            s_n.add("()");
            return s_n;
        }

        Set<String> s_n_1 = parenthesis(n-1);
        for(String eOfN_1: s_n_1){
            s_n.add("()"+eOfN_1);
            s_n.add(eOfN_1+"()");
            s_n.add("("+eOfN_1+")");
        }
        return s_n;
    }
    private static Set<String> parenthesis1(int n){
        Set<String> res = new HashSet<>();
        res.add("()");
        if(n==1){
            return res;
        }
        for (int i = 2; i <=n; i++) {
            Set<String> res_new = new HashSet<>();
            for(String e: res){
                res_new.add(e+"()");
                res_new.add("()"+e);
                res_new.add("("+e+")");
            }
            res = res_new;
        }
        return res;
    }


}
